package run;

import cn.hutool.core.collection.CollUtil;
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.List;
import java.util.stream.Collectors;

public class WordRead {

  public static void main(String[] args) {
    String filePath = "/home/xiuyuan/文档/工作/金诚保险.docx";

    searchTable(filePath);

    //    try {
    //      FileInputStream fileInputStream = new FileInputStream(filePath);
    //      XWPFDocument document = new XWPFDocument(fileInputStream);
    //
    //      List<XWPFTable> tables = document.getTables(); // 获取所有的表格
    //
    //      // 遍历每个表格
    //      for (XWPFTable table : tables) {
    //        //第一行 第一个单元格 如果不是名称 则跳过
    //        XWPFTableCell cell = table.getRow(0).getCell(0);
    //        if(!cell.getText().contains("名称")){
    //          continue;
    //        }
    //        System.out.println("-----------------------------");
    //        // 遍历表格的每一行
    //        for (XWPFTableRow row : table.getRows()) {
    //          // 输出行中的每个单元格的内容
    //          List<String> strings =
    // row.getTableCells().stream().map(XWPFTableCell::getText).collect(Collectors.toList());
    //          System.out.println(CollUtil.join(strings,"|"));
    //        }
    //        System.out.println("-----------------------------");
    //      }
    //      document.close();
    //      fileInputStream.close();
    //    } catch (Exception e) {
    //      e.printStackTrace();
    //    }
  }

  public static void searchTable(String path) {
    try {
      // String path = "C:\\Users\\admin\\Desktop\\first.docx";
      FileInputStream fis = new FileInputStream(path);
      XWPFDocument document = new XWPFDocument(fis);

      // 遍历文档中的所有元素（段落和表格）
      List<IBodyElement> bodyElements = document.getBodyElements();
      for (IBodyElement element : bodyElements) {
        if (element instanceof XWPFParagraph) {
          XWPFParagraph paragraph = (XWPFParagraph) element;
          String text = paragraph.getText();
          if (text != null && !text.isEmpty()) {
            // 处理段落或正文
            System.out.println(text);
          }
        } else if (element instanceof XWPFTable) {
          // 处理表格
          XWPFTable table = (XWPFTable) element;
          // 第一行 第一个单元格 如果不是名称 则跳过
          XWPFTableCell cell = table.getRow(0).getCell(0);
          System.out.println("-----------------------------");
          // 遍历表格的每一行
          for (XWPFTableRow row : table.getRows()) {
            // 输出行中的每个单元格的内容
            List<String> strings =
                row.getTableCells().stream()
                    .map(XWPFTableCell::getText)
                    .collect(Collectors.toList());
            System.out.println(CollUtil.join(strings, "|"));
          }
          System.out.println("-----------------------------");
        }
      }
      fis.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
